"""
给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串 s ，判断字符串是否有效。
有效字符串需满足：
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
"""


def is_valid(s: str) -> bool:
    dic = {'(': ')', '{': '}', '[': ']', "?": "?"}
    stack = ["?"]
    for i in s:
        if i in dic:
            stack.append(i)
        elif dic[stack.pop()] != i:
            return False
    return len(stack) == 1


if __name__ == '__main__':
    s = "()[]{}"  # "{[]}" 也是true
